gcs cors設定
睡睡念
架構從本來的 NFS全部轉到GCS上了,
所以cors也要跟着設定
正文
將下面檔案,存成json
[
{
"origin": ["https://tester.abc.com"],
"method": ["GET","PUT","POST","HEAD","DELETE","PATCH"],
"responseHeader": ["Content-Type", "DNT","X-CustomHeader","X-LANG,Keep-Alive","User-Agent","X-Requested-With","If-Modified-Since,Cache-Control","X-Api-Key,X-Device-Id","Access-Control-Allow-Origin"],
"maxAgeSeconds": 3600
}
]
執行,收工。
gsutil cors set example_cors_file.json gs://example_bucket
但要注意,這個不會馬上生效,感覺要等超過10分鐘以上。
~~補充,origin不能用 * 的萬用符號,之前測了沒有效果 ,
未來會不會改不清楚。 ~~
測試時,可以用* ,直接用 origin:*
查看bucket有沒有設定cors則用
gsutil cors get gs://example_bucket
or
gcloud storage buckets describe gs://example_bucket --format="default(cors_config)"
如果要用gcloud/api,請看下面連結
ref. 設定和查看 CORS 組態
Cors的工作原理
當瀏覽器向 Cloud Storage 發出簡單請求時,會發生以下過程:
-
瀏覽器將
Origin
標頭新增到請求中。Origin
標頭包含相應資源(該資源在尋求共享 Cloud Storage 儲存桶的資源)的來源,例如Origin:https://www.example.appspot.com
。 -
Cloud Storage 將請求的 HTTP 方法以及
Origin
標頭的值與目標儲存桶的 CORS 組態中的方法和來源資訊進行比較,以查看是否存在匹配項。如果存在匹配項,Cloud Storage 將在響應中包含Access-Control-Allow-Origin
標頭。Access-Control-Allow-Origin
標頭包含初始請求的Origin
標頭的值。 -
瀏覽器接收響應並檢查
Access-Control-Allow-Origin
值是否與原始請求中指定的網域匹配。如果它們匹配,則請求成功。如果它們不匹配,或者響應中不存在Access-Control-Allow-Origin
標頭,則請求失敗。